flowbox: Accept multipress gesture late
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 2 Jan 2019 18:10:49 +0000 (19:10 +0100)
committerDaniel Boles <dboles.src@gmail.com>
Mon, 7 Jan 2019 21:01:59 +0000 (21:01 +0000)
So it's able to operate properly with the DnD gesture set by
gtk_drag_source_set(). We usually just react on button release,
that's the right time to claim the gesture.

Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1557
gtk/gtkflowbox.c

index bfc21b5c4b1d3c702562e6c34e2d4eb956704a06..f95d8734e16a7be1747312854fe014d568ac3f47 100644 (file)
@@ -2634,12 +2634,15 @@ gtk_flow_box_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
   if (n_press != 1)
     gtk_gesture_set_state (priv->drag_gesture, GTK_EVENT_SEQUENCE_DENIED);
 
-  gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED);
   priv->active_child = child;
   gtk_widget_queue_draw (GTK_WIDGET (box));
 
   if (n_press == 2 && !priv->activate_on_single_click)
-    g_signal_emit (box, signals[CHILD_ACTIVATED], 0, child);
+    {
+      gtk_gesture_set_state (GTK_GESTURE (gesture),
+                             GTK_EVENT_SEQUENCE_CLAIMED);
+      g_signal_emit (box, signals[CHILD_ACTIVATED], 0, child);
+    }
 }
 
 static void
@@ -2674,6 +2677,9 @@ gtk_flow_box_multipress_gesture_released (GtkGestureMultiPress *gesture,
   if (priv->active_child != NULL &&
       priv->active_child == gtk_flow_box_get_child_at_pos (box, x, y))
     {
+      gtk_gesture_set_state (GTK_GESTURE (gesture),
+                             GTK_EVENT_SEQUENCE_CLAIMED);
+
       if (priv->activate_on_single_click)
         gtk_flow_box_select_and_activate (box, priv->active_child);
       else